home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
parallel
/
client
< prev
next >
Wrap
Text File
|
1992-04-11
|
3KB
|
60 lines
%----------------------------------------------------------------------
%----Linda muProlog Process Library
%----
%----Written by Geoff Sutcliffe, 29/11/89
%----------------------------------------------------------------------
%----Declare . as a prefix operator to allow atomic writes
?-op(100,xf,.).
%----------------------------------------------------------------------
%----eval sends a request
eval(Goal,File):-
send_request(server_eval(Goal,File)).
%----------------------------------------------------------------------
%----out sends a request
out(Tuple):-
send_request(server_out(Tuple)).
%----------------------------------------------------------------------
%----in sends a request with a reply channel, and reads the reply
in(Tuple):-
write_reply_channel(Write_reply_channel),
send_request(server_in(Tuple,Write_reply_channel)),
receive_answer(Tuple).
%----------------------------------------------------------------------
%----inp sends a request with a reply channel, and reads the reply. The
%----reply may be fail
inp(Tuple):-
write_reply_channel(Write_reply_channel),
send_request(server_inp(Tuple,Write_reply_channel)),
receive_answer(Tuple).
%----------------------------------------------------------------------
%----rd sends a request with a reply channel, and reads the reply
rd(Tuple):-
write_reply_channel(Write_reply_channel),
send_request(server_rd(Tuple,Write_reply_channel)),
receive_answer(Tuple).
%----------------------------------------------------------------------
%----rdp sends a request with a reply channel, and reads the reply. The
%----reply may be fail
rdp(Tuple):-
write_reply_channel(Write_reply_channel),
send_request(server_rdp(Tuple,Write_reply_channel)),
receive_answer(Tuple).
%----------------------------------------------------------------------
%----Send a request by writing down the request channel
send_request(Request):-
write_request_channel(Write_request_channel),
write_term(Write_request_channel,Request).
%----------------------------------------------------------------------
%----Receive an answer by reading the reply channel. As only variables
%----can be read, use a new variable and unify afterwards
receive_answer(Answer):-
read_reply_channel(Read_reply_channel),
read(Read_reply_channel,Term_read),
Answer = Term_read.
%----------------------------------------------------------------------
%----Write a term with a . - horrible hack to make writes atomic
write_term(Channel,Term):-
Structure =.. ['.',Term],
writeln(Channel,Structure).
%----------------------------------------------------------------------